Fix mvnup effective model analysis for CI-friendly parent versions#12205
Merged
Conversation
gnodet
added a commit
that referenced
this pull request
Jun 2, 2026
…#12205) Cherry-pick from fix/revision-parent-version branch. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rmannibucau
approved these changes
Jun 2, 2026
7792712 to
72fe7ed
Compare
Bukama
approved these changes
Jun 4, 2026
mvnup's PluginUpgradeStrategy copied POMs to a temp directory for
effective model analysis. That temp directory lacked .mvn, so root
detection failed for child modules with ${revision} parent versions,
producing "Parent POM is located above the root directory" errors.
Eliminate the temp directory entirely — build effective models from
the original file paths, which already have proper .mvn and project
structure for root detection.
Also fix DefaultModelBuilder.doReadFileModel() to:
- Enter the parent resolution block when parent version contains
expressions (${revision}, etc.)
- Only enforce isParentWithinRootDirectory when rootDirectory came
from the session, not the fallback heuristic
- Accept parent version match when version contains an expression
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
72fe7ed to
7ac7e80
Compare
|
@gnodet Please assign appropriate label to PR according to the type of change. |
gnodet
added a commit
that referenced
this pull request
Jun 4, 2026
…12205) (#12230) * Fix mvnup effective model analysis for CI-friendly parent versions mvnup's PluginUpgradeStrategy copied POMs to a temp directory for effective model analysis. That temp directory lacked .mvn, so root detection failed for child modules with ${revision} parent versions, producing "Parent POM is located above the root directory" errors. Eliminate the temp directory entirely — build effective models from the original file paths, which already have proper .mvn and project structure for root detection. Also fix DefaultModelBuilder.doReadFileModel() to: - Enter the parent resolution block when parent version contains expressions (${revision}, etc.) - Only enforce isParentWithinRootDirectory when rootDirectory came from the session, not the fallback heuristic - Accept parent version match when version contains an expression * Fix Spotless formatting violation --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PluginUpgradeStrategy— build effective models from original file paths instead of copying POMs to a temp directory that lacked.mvnfor root detectionDefaultModelBuilder.doReadFileModel()to handle${revision}parent versions: enter parent resolution block for expression versions, skipisParentWithinRootDirectorywhen root directory is a fallback guess, and accept parent version match when version contains an expressionPluginUpgradeStrategyTestFixes the "Parent POM is located above the root directory" error that occurred in
mvnup applyfor all CI-friendly projects using${revision}(bigtop-manager, guacamole-client, hbase-connectors, logging-log4j-samples).Test plan
DefaultModelBuilderTest— 7 tests pass (including newtestCiFriendlyVersion)PluginUpgradeStrategyTest— 27 tests pass (including fixedshouldDetectInheritedPluginsFromRemoteParent)MavenITgh12184CIFriendlyParentVersionTest— 2 ITs pass (property from POM, property from CLI)MavenITgh11196CIFriendlyProfilesTest,MavenITmng8744CIFriendlyTest)mvnup applyon all 4 affected projects produces no "parent above root" errors🤖 Generated with Claude Code